// OLD FILE
//
//
////$(document).ready(function() {
//	// для элементов формы вешаем обработчик для отправки
//	// данных на валидацию и дерганию калбэков на получение
//	// для типичных элементов прописываем стандартные события
//	var ActiveForm = {
//
//		onChange: function (el) {
//			var that = this;
//			// готовим и посылаем запрос на обработку
//			var $el = $(el);
//			var $form = $($el.parents('form'));
//			var action = $form.attr('action') ? $form.attr('action')
//					: window.location.pathname;
//
//			// функция для получения данных, если не казана то используем дефолтную
//			var dataFunction = $el.data('elementDataFunction') || 'getData';
//
//			var dataArr = this[dataFunction]($el);
//
//			dataArr ['isPartial'] = true;
//			dataArr ['___'] = $form.find('input[name=___]').val();
//
//			$.ajax({
//				'type': 'POST',
//				'url': action,
//				'data': dataArr
//			}).done(
//					function(data) {
//						// по получению данных - вызываем либо дефолтный элемент
//						// по изменению элементов, либо кастомный, передавая ему данные
//
//						var $wrapper = $('<div></div>');
//						$wrapper.append(data);
//						var elementData = $wrapper.find('[data-element-data]').data('elementData');
//						var dataFunction = $el.data('elementSetDataFunction') || 'setData';
//						that[dataFunction]($el, elementData);
//
//						// так же подменяем контейнер подчиненных элементов, если такой есть
//						$wrapper.find('[data-slaves-container]').each(function() {
//							$form.find('[data-slaves-container="' + $(this).data('slavesContainer')+ '"]').html($(this).html());
//						});
//
//						//console.log(window.activeForm.elementData);
//
//
////						var $wrapper = $('<div></div>');
////						$wrapper.append(data);
////						$wrapper.find('.master-element-container').each(
////								function() {
////									var id = $(this).find(
////											'[data-element="master"]')
////											.attr('id');
////
////									$form.find('#' + id).parents(
////											'.master-element-container').html(
////											$(this).html());
////	//									var element = $form.find('#' + id).closest('.master-element-container').find('[data-content]');
////	//								showPopoverFor(element);
////
////									// if
////									// ($(this).find('[data-has-error]').length)
////									// {
////									// $form.find('#' +
////									// id).addClass('has-error');
////									// }
////								});
////
//						//alert(data);
//					});
//		},
//
//		init: function () {
//			console.log('init');
//			$('body').on(
//				'change',//activeFrom.
//				'form.active-form [name]', // все поля, имеющие имя
//				function(e) {
//					setTimeout(function() {
//						activeForm.onChange(e.target);
//					}, 100);
//
//			});
//		},
//
//		getData: function ($el) {
//
//			var $form = $($el.parents('form'));
//
//			var name = $el.attr('name');
//			var type = $el.attr('type');
//
//
//			var dataArr = {};
//			var nameArr = name.replace(/\[\]$/, '');
//
//			dataArr[nameArr] = null;
//
//			if (name != nameArr) {
//				dataArr[nameArr] = [];
//			}
//
//			var selector = "[name='" + name + "']";
//			if ('checkbox' == type) {	
//				selector += ":checked";
//			}
//
//			$(selector, $form).each(function() {
//				// если имя подразумевает массив - так его и формируем
//				if (name != nameArr) {
//					dataArr[nameArr].push($(this).val());
//				} else {
//					dataArr[nameArr] = $(this).val();
//				}
//			});
//
//			// это лекарство от пустых мультичекбоксов
//			if (name != nameArr && !dataArr[nameArr].length) {
//				dataArr[nameArr] = null;
//			};
//
//			return dataArr;
//		},
//
//		// дефолтная процедура установки нового значения после аякс-валидации
//		setData: function ($el, data) {
//			// если поменялось - заменим значение если изменились сообщения об
//			// ошибках установим их и перегенерируем их
//			var $elementContainer = $el.parents('div[data-element-container]');
//			var dataFunction = $el.data('elementDataFunction') || 'getData';
//			var oldData = this[dataFunction]($el);
//			var oldValue = oldData[data.name] || '';
//			var value = data.value || '';
//			// значение было изменено
//
//			//if (oldValue.toString() != value.toString()) {
//				//для массивов расписываем значения, для строки просто меняем
//				this.setVal($elementContainer, data.name, value);
//
//			//}
//
//			// ошибки
//			this.setErrors($elementContainer, data.errors);
//
//			this.refreshErrors($el.parents('form'));
//		},
//
//
//		setVal : function($container, name, val) {
//			console.log('setVal');
//			console.log(name);
//			if (typeof (val) == 'string') {
//				// тут или прямое значение или один чекбокс с прямым
//				// именем
//				var $el = $(this);
//
//				if ($el.is(':checkbox')) {
//					if (val) {
//						console.log('checked');
//						$el.attr('checked', 'checked');
//					} else {
//						console.log('uncheck');
//						$el.removeAttr('checked');
//					}
//				} else {
//					console.log('set');
//					$el.val(val);
//				}
//
//			} else if (val instanceof Array) {
//				// если массив то это массив чекбоксов, нужно
//				// фильтровать их по значению -
//				// все сбросить и выставить только те значения что
//				// указаны
//				console.log('uncheck all');
//				$container
//					.find('input[name="' + name + '[]:checkbox"]')
//					.removeAttr('checked');
//				for ( var key in val) {
//					console.log('check with ' + val[key]);
//					$container.find(
//						'input[name="' + name + '[]:checkbox"][value="'
//							+ val[key] + '"]').attr('checked',
//						'checked');
//				}
//
//			} else if (val instanceof Object) {
//				// для объекта (ассоциативный массив) может быть всё что
//				// угодно, поэтому рекурсивно ищем
//				// по имени и имени ключа
//				for ( var key in val) {
//					this.setVal($container, name + '[' + key + ']',
//						val[key]);
//				}
//			}
//		},
//
//		setErrors : function($container, val) {
//			$container.find('[data-errors]').data('errors', val);
//		},
//
//		refreshErrors: function ($container) {
//			// для каждого контейнера элемента грохаем старые ошибки
//			// и рисуем новые, если они есть
//			$container.find('div[data-element-container]').each(function() {
//				$(this).find('ul.errors').remove();
//				var $el = $(this).find('[data-errors]');
//				var errors = $el.data('errors');
//				if (errors instanceof Array) {
//					if (errors.length > 0) {
//						$errors = $('<ul class="errors"></ul>');
//						for (var i in errors) {
//							$errors.append('<li>'+errors[i]+'</li>');
//						}
//						$(this).append($errors);
//					}
//				}
//			});
//		}
//
//	};
//
//
//	// инициализация
//	window.activeForm = ActiveForm;
//	window.activeForm.init();
//});
